ThinkPHP结合使用PHP Console向Chrome 控制台输出SQL

  • 在Chrome中安装PHP Console 插件
  • 下载PHP Console 服务器端程序包到ThinkPHP的Vendor目录下
    例如 /ThinkPHP/Extend/Vendor/PhpConsole

  • 编写Behaviour行为类PhpConsoleBehavior.class

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33

<?php
/*
* 程序初始化时,在DEBUG模式下自动导入PHP Console类并进行实例化
* PHP console for chrome degug tools
* @author zacksleo
*/
class PhpConsoleBehavior extends Behavior{

protected $options = array(
'PHP_CONSOLE' => false,
);

public function run(&$params){
if(C('PHP_CONSOLE')){
if(APP_DEBUG){
vendor('PhpConsole.__autoload'); //导入文件
PhpConsole\Helper::register(); //注册,自动实例化
$connector = PhpConsole\Connector::getInstance();
$connector->setPassword('password');
$handler = PhpConsole\Handler::getInstance();
// 输出PHP错误和异常
$handler->start();
// 配置 eval provider(在Chrome中远程执行PHP),如果不使用,则不配置
$evalProvider = $connector->getEvalDispatcher()->getEvalProvider();
$evalProvider->setOpenBaseDirs(array(__DIR__));
// 必须最后调用
$connector->startEvalRequestsListener();
}
}
}
}
?>
  • 在/App/Conf/tags.php 中配置标签位:’app_init’ => array(‘PhpConsole’),
  • 在config.php文件中定义标签’PHP_CONSOLE’ => true,
  • 修改ThinkPHP的Log.class文件(位于/ThinkPHP/Lib/Core/Log.class.php)中的recode方法如下
1
2
3
4
5
6
7
8
9
10
static function record($message, $level = self::ERR, $record = false){
//zacksleo
if($level == self::SQL){
PC::debug($message, 'SQL');
}
//zacksleo
if($record || false !== strpos(C('LOG_LEVEL'), $level)){
self::$log[] = "{$level}: {$message}\r\n";
}
}
Thanks for reading.